Skip to content

Prevent sidebar row labels from truncating - #4789

Merged
juliusmarminge merged 1 commit into
mainfrom
t3code/fix-sidebar-row-truncation
Jul 28, 2026
Merged

Prevent sidebar row labels from truncating#4789
juliusmarminge merged 1 commit into
mainfrom
t3code/fix-sidebar-row-truncation

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Jul 28, 2026

Copy link
Copy Markdown
Member

What Changed

Adjusted sidebar row status and action slots so hidden hover/focus controls no longer reserve or overlap label space. Working duration labels now use a monospace font for consistent width.

Why

Sidebar project labels could truncate unnecessarily because status and action elements competed for the same layout space. The updated positioning lets labels reclaim available width while preserving status visibility and hover/focus actions.

UI Changes

No before/after screenshots were provided.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Low Risk
Localized CSS/layout changes in SidebarV2 with no API or data-layer impact.

Overview
Sidebar v2 card rows no longer let the project title truncate early because snooze/settle controls sat in the same right slot as the status/time label.

At rest, only the status (or relative time) reserves width on the right. On row hover, focus-within, or while the snooze popover is open, that label is taken out of flow (absolute) and the action buttons use in-flow layout (static) so they define the slot width without overlapping the project name. Inline comments document this “visible state owns the slot width” behavior.

Working duration ticks now render in font-mono with tabular-nums so the elapsed timer keeps a stable width as it updates.

Reviewed by Cursor Bugbot for commit 7df171f. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Prevent sidebar row labels from truncating on hover and focus

  • The status/actions slot in SidebarV2Row now switches layout on row hover or focus: the status label fades out and becomes absolutely positioned, while action controls switch to static positioning and become fully visible.
  • When the snooze menu is open, actions remain in-flow and the status label is hidden at the right edge, preventing layout shifts that caused label truncation.
  • WorkingDuration now renders with font-mono in addition to tabular-nums for consistent character width during live updates.
  • Behavioral Change: spacing within the slot changes due to items-stretch replacing items-center and removal of left padding (pl-1).

Macroscope summarized 7df171f.

- Let hidden row actions leave space for the project label
- Use a monospace font for working duration display
@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 076afc4c-f08c-4c95-98e8-a6c1a38b106f

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch t3code/fix-sidebar-row-truncation

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 28, 2026
@juliusmarminge
juliusmarminge enabled auto-merge (squash) July 28, 2026 21:57
@juliusmarminge
juliusmarminge merged commit 2deea7a into main Jul 28, 2026
17 checks passed
@juliusmarminge
juliusmarminge deleted the t3code/fix-sidebar-row-truncation branch July 28, 2026 21:58

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

Bugbot Autofix is ON, but it could not run because the branch was deleted or merged before autofix could start.

Reviewed by Cursor Bugbot for commit 7df171f. Configure here.

"tabular-nums text-muted-foreground/65 transition-opacity group-hover/v2-row:opacity-0",
snoozeMenuOpen && "opacity-0",
"self-center justify-self-end tabular-nums text-muted-foreground/65 transition-opacity group-focus-within/v2-status-slot:absolute group-focus-within/v2-status-slot:right-0 group-hover/v2-row:absolute group-hover/v2-row:right-0 group-hover/v2-row:opacity-0",
snoozeMenuOpen && "absolute right-0 opacity-0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Status overlaps actions on focus

Medium Severity

Keyboard focus on the status slot makes the status text absolute but doesn't hide it, causing it to overlap with the visible snooze/settle actions. This differs from hover or an open snooze menu, which correctly hide the status.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 7df171f. Configure here.

"absolute inset-y-0 right-0 flex items-stretch opacity-0 transition-opacity focus-within:opacity-100 group-hover/v2-row:opacity-100",
snoozeMenuOpen && "opacity-100",
"absolute inset-y-0 right-0 flex items-stretch opacity-0 transition-opacity focus-within:static focus-within:opacity-100 group-hover/v2-row:static group-hover/v2-row:opacity-100",
snoozeMenuOpen && "static opacity-100",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hidden status blocks action clicks

High Severity

When a row is hovered or the snooze menu is open, the status element becomes absolutely positioned and transparent, while the action buttons become static. This allows the invisible status element to intercept pointer events, blocking clicks on the visible snooze and settle buttons.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 7df171f. Configure here.

github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Jul 29, 2026
## What's Changed
* Add OTA update checks to mobile settings by @juliusmarminge in pingdotgg/t3code#4686
* fix(mobile): threads load snapped to bottom on iOS by @t3dotgg in pingdotgg/t3code#4689
* feat: default sidebar v2 on for nightly and dev builds by @t3dotgg in pingdotgg/t3code#4491
* fix(web): 33 web UI fixes by @maxktz in pingdotgg/t3code#4700
* Make mobile Thread List v2 the default by @juliusmarminge in pingdotgg/t3code#4717
* Fix mobile showcase workflow without Clerk by @juliusmarminge in pingdotgg/t3code#4718
* Fix relay credential lookup for unlinked environments by @juliusmarminge in pingdotgg/t3code#4692
* Settle merged PR threads immediately by @t3dotgg in pingdotgg/t3code#4704
* feat(web): add maria's sidebar header artwork toggle by @maxktz in pingdotgg/t3code#4652
* feat(web): add appearance settings category by @maxktz in pingdotgg/t3code#4715
* fix(desktop): allow updater-controlled relaunch by @0x4bs3nt in pingdotgg/t3code#4721
* fix(web): prevent diff panel scroll jumping by @0x4bs3nt in pingdotgg/t3code#4724
* Link inline code file paths in chat markdown by @juliusmarminge in pingdotgg/t3code#4726
* Fix Android showcase capture and rebuild v2 queued rows by @juliusmarminge in pingdotgg/t3code#4730
* perf(server): negotiate permessage-deflate on the websocket by @t3dotgg in pingdotgg/t3code#4705
* docs: overhaul agent guidance by @t3dotgg in pingdotgg/t3code#4782
* Prevent sidebar row labels from truncating by @juliusmarminge in pingdotgg/t3code#4789
* perf(server): gzip large thread snapshots by @t3dotgg in pingdotgg/t3code#4788
* fix(web): stashed prompts now survive switching providers by @t3dotgg in pingdotgg/t3code#4787
* Fix Git ref refresh resource storms by @juliusmarminge in pingdotgg/t3code#4727
* perf(server): trim stale context-window rows and drop dead replay RPC by @t3dotgg in pingdotgg/t3code#4791
* fix(web): defer command palette filesystem navigation by @juliusmarminge in pingdotgg/t3code#2109
* fix(release): skip scripts during Vercel installs by @t3dotgg in pingdotgg/t3code#4796
* refactor(client): share filesystem browse navigation by @juliusmarminge in pingdotgg/t3code#4797
* fix(mobile): defer filesystem navigation by @juliusmarminge in pingdotgg/t3code#4799
* refactor(server): use native HTTP compression streams by @juliusmarminge in pingdotgg/t3code#4798
* Remove Connect waitlist and add GA announcement tooling by @juliusmarminge in pingdotgg/t3code#4691


**Full Changelog**: pingdotgg/t3code@v0.0.29...v0.0.30

## What's Changed
* Add OTA update checks to mobile settings by @juliusmarminge in pingdotgg/t3code#4686
* fix(mobile): threads load snapped to bottom on iOS by @t3dotgg in pingdotgg/t3code#4689
* feat: default sidebar v2 on for nightly and dev builds by @t3dotgg in pingdotgg/t3code#4491
* fix(web): 33 web UI fixes by @maxktz in pingdotgg/t3code#4700
* Make mobile Thread List v2 the default by @juliusmarminge in pingdotgg/t3code#4717
* Fix mobile showcase workflow without Clerk by @juliusmarminge in pingdotgg/t3code#4718
* Fix relay credential lookup for unlinked environments by @juliusmarminge in pingdotgg/t3code#4692
* Settle merged PR threads immediately by @t3dotgg in pingdotgg/t3code#4704
* feat(web): add maria's sidebar header artwork toggle by @maxktz in pingdotgg/t3code#4652
* feat(web): add appearance settings category by @maxktz in pingdotgg/t3code#4715
* fix(desktop): allow updater-controlled relaunch by @0x4bs3nt in pingdotgg/t3code#4721
* fix(web): prevent diff panel scroll jumping by @0x4bs3nt in pingdotgg/t3code#4724
* Link inline code file paths in chat markdown by @juliusmarminge in pingdotgg/t3code#4726
* Fix Android showcase capture and rebuild v2 queued rows by @juliusmarminge in pingdotgg/t3code#4730
* perf(server): negotiate permessage-deflate on the websocket by @t3dotgg in pingdotgg/t3code#4705
* docs: overhaul agent guidance by @t3dotgg in pingdotgg/t3code#4782
* Prevent sidebar row labels from truncating by @juliusmarminge in pingdotgg/t3code#4789
* perf(server): gzip large thread snapshots by @t3dotgg in pingdotgg/t3code#4788
* fix(web): stashed prompts now survive switching providers by @t3dotgg in pingdotgg/t3code#4787
* Fix Git ref refresh resource storms by @juliusmarminge in pingdotgg/t3code#4727
* perf(server): trim stale context-window rows and drop dead replay RPC by @t3dotgg in pingdotgg/t3code#4791
* fix(web): defer command palette filesystem navigation by @juliusmarminge in pingdotgg/t3code#2109
* fix(release): skip scripts during Vercel installs by @t3dotgg in pingdotgg/t3code#4796
* refactor(client): share filesystem browse navigation by @juliusmarminge in pingdotgg/t3code#4797
* fix(mobile): defer filesystem navigation by @juliusmarminge in pingdotgg/t3code#4799
* refactor(server): use native HTTP compression streams by @juliusmarminge in pingdotgg/t3code#4798
* Remove Connect waitlist and add GA announcement tooling by @juliusmarminge in pingdotgg/t3code#4691


**Full Changelog**: pingdotgg/t3code@v0.0.29...v0.0.30

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S 10-29 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant